<?php

namespace app\admin\logic\Order;

use app\common\CustomMPDF;

class OrderContractPreview
{

    /**
     * @describe 生成订单合同
     * @author: Bobo
     * @date: 2025-03-06 14:01:17
     * @param [type] @required
     * @param $type 1: ERP后台预览合同，需要保存至文件柜 2: 商城预览合同，不需要保存至文件柜 @required
     * @return Renderable
     */
    public function generateOrderInvoice($order, int $type)
    {
        try {
            // 1. 根据合同类型确定模板
            $title = $order['contract_type'] == '2' ? 'INVOICE' : '高性能服务器销售合同';
            // 让mPDF自动选择合适的字体
            $font = '';
            $fileName = $title . '_' . $order['order_no'] . date('YmdHis') . '.pdf';

            $html = $order['contract_type'] == '2'
                ? $this->getTemplateForeign($order)
                : $this->getTemplateDomestic($order);

            // 2. 清理输出缓冲
            while (ob_get_level()) {
                ob_end_clean();
            }

            // 3. PDF基础配置 - 使用mPDF
            $config = [
                'mode' => 'utf-8',
                'format' => 'A4',
                'default_font_size' => 11,
                'default_font' => $font,
                'margin_left' => 15,
                'margin_right' => 15,
                'margin_top' => 15,
                'margin_bottom' => 25,
                'orientation' => 'P'
            ];

            $pdf = new CustomMPDF($config);

            // 设置文档信息
            $pdf->SetCreator('Contract System');
            $pdf->SetAuthor('明曦科技');
            $pdf->SetTitle($title);

            // 页面设置
            $pdf->setPrintHeader(false);
            $pdf->setPrintFooter(false);
            $pdf->SetAutoPageBreak(true, 25); // 设置自动分页边距

            // 4. 容器尺寸配置 - 调整位置为背景图片留出空间
            $containerConfig = [
                'width' => 180,          // mm
                'x' => 15,              // mm
                'padding' => 20 * 0.2646, // 20px转mm
                'firstPageY' => 50,      // 第一页Y坐标 - 与阴影位置匹配
                'otherPageY' => 30       // 其他页面Y坐标
            ];

            // 5. 设置阴影回调
            $pdf->setShadowCallback(function ($pdf) {
                $this->buildshadow($pdf);
            });

            // 6. 添加页面并设置背景
            $pdf->AddPage();
            $this->setBackgroundImage($pdf, $order['contract_type']);

            // 7. 生成阴影HTML
            $pdf->generateShadowHtml();

            // 8. 设置标题
            $pdf->insertTitle(
                $font,
                $title,
                $containerConfig['x'],
                $pdf->getPage() == 1 ? $containerConfig['firstPageY'] : $containerConfig['otherPageY'],
                $containerConfig['width']
            );

            // 9. 写入内容
            $currentPage = $pdf->getPage();
            $contentX = $containerConfig['x'] + $containerConfig['padding'];
            $contentWidth = $containerConfig['width'] - (2 * $containerConfig['padding']);

            // 根据页码计算内容的起始 Y 坐标
            $contentY = $containerConfig['firstPageY'] + $containerConfig['padding']; // 第一页内容Y

            if ($currentPage > 1) {
                $shadowY_otherPages = 12; // 与 buildshadow 中非第一页的 containerY 保持一致
                $contentY = $shadowY_otherPages + $containerConfig['padding'];
            }

            $pdf->writeHTMLCell(
                $contentWidth,
                0, // height auto
                $contentX, // x
                $contentY, // y - 直接使用计算出的内容起始Y
                $html,
                0,
                1, // ln=1
                0,
                true,
                '',
                true
            );

            // 10. 输出PDF
            $filePath = public_path() . '/static/contract/' . $fileName;

            // 确保目录存在
            if (!is_dir(dirname($filePath))) {
                mkdir(dirname($filePath), 0777, true);
            }

            // 根据类型输出PDF
            if ($type == 1) {
                // 保存到文件
                $pdf->Output($filePath, 'F');
                return ['code' => 0, 'filePath' => $filePath];
            } else {
                // 浏览器预览 - 设置正确的HTTP头
                // 再次清理输出缓冲，确保没有额外输出
                while (ob_get_level()) {
                    ob_end_clean();
                }

                header('Content-Type: application/pdf');
                header('Content-Disposition: inline; filename="' . urlencode($fileName) . '"');
                header('Cache-Control: private, max-age=0, must-revalidate');
                header('Pragma: public');
                $pdf->Output($fileName, 'I');
                exit; // 确保没有额外输出
            }
        } catch (\Exception $e) {
            error_log('PDF Generation Error: ' . $e->getMessage());
            return ['code' => 1, 'message' => 'PDF生成失败: ' . $e->getMessage() . 'line : ' . $e->getLine() . 'file : ' . $e->getFile()];
        }
    }

    /**
     * @describe 设置背景图片
     * @author: Bobo
     * @date: 2025-04-28 16:24:42 
     * @param [type] @required
     * @return Renderable
     */
    private function setBackgroundImage($pdf, $type)
    {

        if ($type == 1) {
            $bgImage = public_path() . '/static/images/nobg.jpg';
        } else {
            $bgImage = public_path() . '/static/images/invoicebg.jpg';
        }

        // 自定义背景图片尺寸和位置 - 橙色弧形背景覆盖整个页面顶部
        $x = 0;          // X坐标 (mm) - 从页面左边开始
        $y = 0;          // Y坐标 (mm) - 从页面顶部开始
        $w = 210;        // 宽度 (mm) - 整个A4纸宽度，完全横跨页面
        $h = 48;        // 高度 (mm) - 增加高度以完整显示弧形背景和logo区域，包含INVOICE标题和客户信息

        // 使用mPDF的Image方法插入背景图片，移除重复的HTML方式
        $pdf->insertBackgroundImage($bgImage, $x, $y, $w, $h);
    }

    // 这个方法现在主要用于兼容，实际的阴影绘制在CustomMPDF中处理
    private function buildshadow($pdf)
    {
        // 阴影绘制逻辑已移到CustomMPDF::generateShadowHtml()中
        // 这里保留空方法以保持兼容性
    }

    public function getTemplateForeign($data)
    {
        $data['shipping_address'] =  $data['shipping_address']  ?? '';
        $data['consignee'] =  $data['consignee']  ?? '';
        $data['phone'] =  $data['phone']  ?? '';
        $data['logistics_fee'] =  $data['logistics_fee']  ?? '';
        $data['delivery_terms'] =  $data['delivery_terms']  ?? '';
        $data['notes'] =  $data['notes']  ?? '';
        $data['advance_amount'] = number_format($data['advance_amount'] ?? 0, 2, '.', '');
        $data['discount'] = number_format($data['discount'] ?? 0, 2, '.', '');
        $data['order_no'] =  $data['order_no']  ?? '';
        $data['signing_date'] =  $data['signing_date']  ?? '';
        $data['customer_name'] =  $data['customer_name']  ?? '';
        $data['transfer_payment_info'] =  $data['transfer_payment_info']  ?? '';



        // 预处理送货信息的HTML
        $shippingInfo = '';
        switch ($data['delivery_method']) {
            case 0:
                $shippingInfo = "
                    <tr>
                        <td style=\"width: 40%;\">Delivery Method:</td>
                        <td style=\"width: 60%;\">Customer Self-pickup</td>
                    </tr>
                ";
                break;
            case 1:
                $shippingInfo = "
                    <tr>
                        <td style=\"width: 40%;\">Attn:</td>
                        <td style=\"width: 60%;\">{$data['consignee']}</td>
                    </tr>

                    <tr>
                        <td style=\"width: 40%;\">Phone Number:</td>
                        <td style=\"width: 60%;\">{$data['phone']}</td>
                    </tr>
                    
                    <tr>
                        <td style=\"width: 40%;\">Address:</td>
                        <td style=\"width: 60%;\">{$data['shipping_address']}</td>
                    </tr>";
                break;
            case 2:
                $shippingInfo = "
                    <tr>
                        <td style=\"width: 40%;\">Delivery Method:</td>
                        <td style=\"width: 60%;\">Warehouse Transfer - Ownership shift to Customer</td>
                    </tr>
                ";
                break;

            default:
                # code...
                break;
        }

        if ($data['order_category'] == 'wholesal') {
            $shippingInfo = "
            <tr>
                <td style=\"width: 40%;\">Delivery Method:</td>
                <td style=\"width: 60%;\">To be determined</td>
            </tr>
        ";
        }

        if (isset($data['shipping_end_date']) && $data['shipping_end_date']) {
            $data['shipping_date'] = ($data['shipping_start_date'] ?? '') . '-' . $data['shipping_end_date'];
        } else {
            $data['shipping_date'] = $data['shipping_start_date'] ?? '';
        }

        $total_price = $data['total_amount'];

        $shipping_total = (float)($data['logistics_fee'] ?? 0.0) + (float)($data['first_leg_logistics_fee'] ?? 0.0);
        $shipping_total = number_format($shipping_total, 2, '.', '');

        $index = 1; // 从 1 开始
        $product_rows = ""; // 用于存放动态生成的产品列表

        // 检查产品列表是否存在且不为空
        if (isset($data['product_list']) && is_array($data['product_list']) && !empty($data['product_list'])) {
            foreach ($data['product_list'] as $product) {
                $product_rows .= "
                <tr>
                    <td class=\"col-no\">{$index}</td>
                    <td class=\"col-item item-column\">" . ($product['name'] ?? '') . "</td>
                    <td class=\"col-currency\">" . ($product['currency'] ?? '') . "</td>
                    <td class=\"col-price\">" . ($product['price'] ?? '') . "</td>
                    <td class=\"col-qty\">" . ($product['quantity'] ?? '') . "</td>
                    <td class=\"col-amount\">" . ($product['subtotle_price'] ?? '') . "</td>
                    <td class=\"col-warranty\">" . ($product['expiration_date'] ? $product['expiration_date'] . '' : '') . "</td>
                </tr>";
                $index++;
            }
        }
        $notes_row = '';
        if (!empty($data['notes'])) {
            $notes_row = "<p>Notes: {$data['notes']}</p>";
        }

        // 合同主体内容模板
        return <<<HTML
        <style>
            /* 全局页面阴影效果 - 为每页添加阴影容器 */
            @page {
                margin: 15mm;
            }
            
            /* 内容区域 */
            .page-content {
                position: relative;
                background-color: white;
                border-radius: 0;
                padding: 5mm;
                z-index: 1;
                margin-top: 0;
            }
            
            .contract-content {
                position: relative;
                background-color: white;
                border-radius: 0;
                padding: 5mm;
                z-index: 1;
                margin-top: 0;
            }
            
            .contract-content p {
                margin: 10px 0;    /* 段落间距 */
                line-height: 1;  /* 行高 */
                font-weight: 400;  /* 设置正常字重 */
            }
            .bank-info {
                margin-left: 4em;  /* 银行信息左侧缩进 */
            }
            .span-block{
                display: block;
            }
             /* 表格整体上边距 */
            table {
                width: 80%;
                margin-top: 10px; /* 表格距离上方 10px */
                border-collapse: collapse; /* 合并边框，避免双边框 */
            }
            .buyer-info{
                margin-left: 10%;
            }

            /* 每个 tr 的上边距 */
            .header tr {
                padding-top: 10px; /* 每个 tr 距离上方 10px */
            }

            /* 单元格样式 */
            .header td {
                width: 50%;
                text-align: left;
                padding: 8px; /* 单元格内边距，可选 */
            }
            .invoice-header{
                width: 100%;
                height: 37px;
                opacity: 0.28;
                background: rgb(247, 223, 195);
                border-radius: 8px;
                position: relative;
                line-height: 37px;
                padding: 0 8px;
            }
            .invoice-header .header-item {
                width: 50%;
                float: left;
            }
            .invoice-header .header-item:last-child {
                text-align: right;
            }
            .red-text{
                color: red;
                font-weight: bold;
            }
            .bank-account{
                font-size:10px !important;
            }
            .bank-account p{
                line-height: 0.5 !important;;  /* 行高 */
            }
             /* ==== 产品列表表格样式 START (Table-based) ==== */
            .product-table {
                width: 100%;
                border-collapse: collapse;
                border: 1px solid #ccc;
                border-radius: 8px; /* mPDF可能不支持table的圆角 */
                overflow: hidden; /* mPDF可能不支持table的溢出隐藏 */
            }

            .product-table th, .product-table td {
                padding: 12px 4px;
                text-align: center;
                vertical-align: middle;
            }

            .product-table thead {
                background-color: #909399 !important;
                color: white;
            }
            
            .product-table th {
                font-weight: bold;
            }
            
            .product-table .item-column {
                text-align: left;
            }

            /* 列宽设置 */
            .col-no { width: 6%; }
            .col-item { width: 32%; }
            .col-currency { width: 12%; }
            .col-price { width: 14%; }
            .col-qty { width: 7%; }
            .col-amount { width: 14%; }
            .col-warranty { width: 13%; }
            /* ==== 产品列表表格样式 END ==== */

            .h2_title{
                background: rgb(247, 223, 195) !important;
                text-align: center;
                padding: 8px;
                border-radius: 8px;
                font-size: 1.2em;
                font-weight: bold;
            }
        </style>
        
        <div class="contract-content page-content">
            <div class="invoice-header">
                <div class="header-item">INVOICE_No: {$data['order_no']}</div>
                <div class="header-item">Date: {$data['signing_date']}</div>
            </div>
            <table class="header buyer-info">               
                <tr>
                    <td style="width: 40%;">Buyer:</td>
                    <td style="width: 60%;">{$data['customer_name']}</td>
                </tr>
                {$shippingInfo}
               
            </table>
            <br/>
     
            <br/>
            <table class="product-table">
                <thead>
                    <tr>
                        <th class="col-no">No.</th>
                        <th class="col-item">Item</th>
                        <th class="col-currency">Currency</th>
                        <th class="col-price">Unit Price</th>
                        <th class="col-qty">Qty</th>
                        <th class="col-amount">Amount</th>
                        <th class="col-warranty">Warranty</th>
                    </tr>
                </thead>
                <tbody>
                    {$product_rows}
                </tbody>
            </table>
            <br/>
            <table style="width:100%;" border="0" cellpadding="5">
                <tr>
                    <td style="width: 33%;">Shipping: {$shipping_total} {$product['currency']}</td>
                    <td style="width: 33%;">Discount: {$data['discount']}  {$product['currency']}</td>
                    <td style="width: 33%;">Deposit: {$data['advance_amount']} {$product['currency']}</td>
                </tr>
            </table>
            <h2 style="text-align:right">Total Amount: {$total_price} {$product['currency']}</h2>
            <div class="">
                <p>Country of Origin: P.R. China</p>
                <p>Payment Terms: 100% T/T in advance</p>
                <p>Shipping Date: {$data['shipping_date']}</p>
                <p>Custom Tax: {$data['delivery_terms']}</p>
                {$notes_row}
            </div>
            <div>
                <div class="h2_title">Payment Information</div>
                <p class="red-text">SUNRAYS is not responsible for Transfer Fees.</p>
                <p class="red-text">Please pay the full amount of the invoice (including Transfer Fees).</p>
                <br/>
                <p class="red-text">Payment Reference (Fill in Transfer Remarks): {$data['order_no']}</p>
                <br/>
                <div class="bank-account">
                    <pre>{$data['transfer_payment_info']}</pre>
                </div>

            <p class="red-text">Note:</p>
            <p class="red-text">1.Bank Transfer Payment: The remittance form must accurately fill in our Company Name and Address information. If the corresponding "Name" and "Address" columns are insufficient, please fill them in the "Remarks" column of the remittance form.</p>
            <p class="red-text">2. If the packaging of the goods received is visibly damaged, please reject the delivery. </p>
            <p class="red-text">3. After receiving the product, please do not disassemble the machine or tamper with the warranty label. Otherwise, the warranty will be invalid.</p>
            <p class="red-text">4. If the buyer picks up the goods by himself or the Shipping Fee of the goods is paid directly by the buyer to the carrier instead of SUNRAYS. When the goods leave the SUNRAYS warehouse and are handed over to the buyer or carrier, it means that SUNRAYS has completed the delivery of the goods. SUNRAYS is not responsible for damage and loss of goods during transportation.</p>
            </div>
        </div>

HTML;
    }


    /**
     * @describe 国内合同模版
     * @author: Bobo
     * @date: 2025-03-06 14:34:36
     * @param [type] @required
     * @return Renderable
     */
    public function getTemplateDomestic($data)
    {

        $data['shipping_address'] =  $data['shipping_address']  ?? '';
        $data['consignee'] =  $data['consignee']  ?? '';
        $data['phone'] =  $data['phone']  ?? '';
        $data['logistics_fee'] =  $data['logistics_fee']  ?? '';
        $data['delivery_terms'] =  $data['delivery_terms']  ?? '';
        $data['notes'] =  $data['notes']  ?? '';
        $data['order_no'] =  $data['order_no']  ?? '';
        $data['signing_date'] =  $data['signing_date']  ?? '';
        $data['customer_name'] =  $data['customer_name']  ?? '';
        $data['id_number'] =  $data['id_number']  ?? '';
        $data['payment_deadline'] =  $data['payment_deadline']  ?? '';
        $data['shipping_start_date'] =  $data['shipping_start_date']  ?? '';
        $data['shipping_end_date'] =  $data['shipping_end_date']  ?? '';

        $total_price = 0;
        $product_rows = ""; // 用于存放动态生成的产品列表
        $index = 1; // 从 1 开始

        // 检查产品列表是否存在且不为空
        if (isset($data['product_list']) && is_array($data['product_list']) && !empty($data['product_list'])) {
            foreach ($data['product_list'] as $product) {
                $total_price += $product['subtotle_price'] ?? 0;
                $product_rows .= "
            <tr>
                    <td class=\"col-no\">{$index}</td>
                    <td class=\"col-item item-column\">" . ($product['name'] ?? '') . "</td>
                    <td class=\"col-currency\">" . ($product['currency'] ?? '') . "</td>
                    <td class=\"col-price\">" . ($product['price'] ?? '') . "</td>
                    <td class=\"col-qty\">" . ($product['quantity'] ?? '') . "</td>
                    <td class=\"col-amount\">" . ($product['subtotle_price'] ?? '') . "</td>
                    <td class=\"col-warranty\">" . ($product['expiration_date'] ? $product['expiration_date'] . '' : '') . "</td>
            </tr>";

                $index++; // 每次循环递增 1
            }
        }
        $notes_row = '';
        if (!empty($data['notes'])) {
            $notes_row = "
            <tr>
                    <td>备注: {$data['notes']}</td>
            </tr>";
        }

        // $pageBreakAfterValue = (isset($data['product_list']) && count($data['product_list']) < 2) ? '<div style="page-break-after: auto;"></div>' : '<div style="page-break-after: always;"></div>';

        $pageBreakAfterValue = '<div style="page-break-after: always;"></div>';

        // 合同主体内容模板
        return <<<HTML
        <style>
            /* 全局页面阴影效果 - 为每页添加阴影容器 */
            @page {
                margin: 15mm;
            }
            
            /* 内容区域 */
            .page-content {
                position: relative;
                background-color: white;
                border-radius: 0;
                padding: 5mm;
                z-index: 1;
                margin-top: 0;
            }
            
            .contract-content {
                position: relative;
                background-color: white;
                border-radius: 0;
                padding: 5mm;
                z-index: 1;
                margin-top: 0;
            }
            
            .contract-content p {
                margin: 10px 0;    /* 段落间距 */
                line-height: 1;  /* 行高 */
                font-weight: 400;  /* 设置正常字重 */
            }
            .bank-info {
                margin-left: 4em;  /* 银行信息左侧缩进 */
            }
            .span-block{
                display: block;
            }
            /* ==== 产品列表表格样式 START (Table-based) ==== */
            .product-table {
                width: 100%;
                border-collapse: collapse;
                border: 1px solid #ccc;
                border-radius: 8px; /* mPDF可能不支持table的圆角 */
                overflow: hidden; /* mPDF可能不支持table的溢出隐藏 */
            }

            .product-table th, .product-table td {
                padding: 12px 4px;
                text-align: center;
                vertical-align: middle;
            }

            .product-table thead {
                background-color: #909399 !important;
                color: white;
            }
            
            .product-table th {
                font-weight: bold;
            }
            
            .product-table .item-column {
                text-align: left;
            }

            /* 列宽设置 */
            .col-no { width: 6%; }
            .col-item { width: 32%; }
            .col-currency { width: 12%; }
            .col-price { width: 14%; }
            .col-qty { width: 7%; }
            .col-amount { width: 14%; }
            .col-warranty { width: 13%; }
            /* ==== 产品列表表格样式 END ==== */
        </style>
        <div class="contract-content page-content">
            <div class="invoice-header">
                <div class="header-item">合同编号:&nbsp;&nbsp;{$data['order_no']}</div>
                <div class="header-item">签署日期:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;年&nbsp;&nbsp;&nbsp;&nbsp;月&nbsp;&nbsp;&nbsp;&nbsp;日 </div>
            </div>
            <hr/>
            <p>本《高性能服务器销售合同》（下称"本合同"）由以下双方于{$data['signing_date']}在中国上海市共同签署：</p>
            <p>甲    方:&nbsp;&nbsp;{$data['customer_name']}<br/>
                统一社会信用代码/身份证号：{$data['id_number']}<br/>
                联系地址: {$data['shipping_address']}<br/>
                联系人: {$data['consignee']}<br/>
                联系电话：{$data['phone']}<br/></p>

            <p>乙    方:上海明曦信息科技有限公司<br/>
            统一社会信用代码:&nbsp;&nbsp;91310000607434366K<br/>
            联系地址:上海市静安区愚园路 546 号--4 号楼 3 楼<br/>
            联系电话:17501686874</p>

            <p>甲乙双方经友好协商，本着公平、平等、互利的原则，依照《中华人民共和国民法典》等相关法律、法规规定，就乙方向甲方销售高性能服务器（以下简称"产品"）事宜达成如下合同条款，以资共同信守：</p>

            <p>1、销售标的<br>1.1 乙方向甲方销售的产品数量、单价、规格及价款总额如下:</p>
            <table class="product-table">
                <thead>
                    <tr>
                        <th class="col-no">序号</th>
                        <th class="col-item">产品名称</th>
                        <th class="col-currency">币种</th>
                        <th class="col-qty">售价</th>
                        <th class="col-price">数量</th>
                        <th class="col-amount">售价小计</th>
                        <th class="col-warranty">质保</th>
                    </tr>
                </thead>
                {$product_rows}
            </table>
            <br/>
            <table style="width:100%;" border="0" cellpadding="5">
                <tr>
                    <td style="width: 33%;">运费: {$data['logistics_fee']} {$product['currency']}</td>
                    <!-- <td style="width: 33%;">折扣: {$data['discount']}</td> -->
                    <!-- <td style="width: 33%;">定金: {$data['advance_amount']}</td> -->
                </tr>
                <tr>
                    <td style="width: 33%;">合同总金额: {$data['total_amount']} {$product['currency']}</td>
                </tr>
                {$notes_row}
            </table>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;上述价款均包含增值税。</p>

            <p>1.2 双方确认并同意，乙方向甲方实际交付的产品的总算力不少于本协议第1.1条约定的总算力，乙方可根据前述总算力情况对总台数进行调整，乙方不保证与1.1约定台数保持一致。在标准约定算力范围内，单台服务器算力±10%内为允许范围。</p>

            <p>2、价款与支付<br/>2.1 本协议1.1项下全部价款甲方以转账方式向乙方付款，甲方在{$data['payment_deadline']}前向乙方支付全款。</p>

            <p>2.2 如甲方未能按照本协议第 2.1条的约定支付产品全部价款，乙方有权在任意时点解除本合同，并要求甲方承担本合同全部价款【30%】的违约金，自解除合同的书面通知到达甲方之日起本合同解除。乙方有权在甲方已向乙方支付的款项(如有)中扣除违约金。如甲方已支付的款项不足以支付违约金，乙方有权要求甲方继续支付。如甲方已支付的款项在扣除违约金后仍有剩余，乙方应将剩余部分退还甲方(因甲方违约，甲方认可放弃已付款日至退款日期间的利息)。</p>

            <p>2.3 本合同所有款项均以人民币结算，以转帐方式汇入乙方所提供的帐户。乙方账号信息如下(如乙方不另行通知，则甲方按如下执行):</p>

            <p class="bank-info">
                账户名称：上海明曦信息科技有限公司<br>
                开户银行：民生银行上海金桥支行<br>
                银行帐号： 640559869
            </p>

            <p>2.4 本协议项下价款总额包含增值税费用，不包含从乙方工厂发运至甲方指定地点(限于中国大陆地区)的运费和保价费用，也不包含甲方购买产品应缴纳的相关维护或其它适用的成本，除本协议明确约定应由乙方承担的费用外，其余未包含在内的费用均由甲方自行承担。按照相关税收法律法规的规定，甲乙方按照纳税义务承担其他与本协议相关的税费。</p>

            <p>2.5 本协议项下，货币单位均为人民币元。无论甲方以何种方式支付本协议项下价款，也无论乙方以何种方式支付本协议项下应退还款项，本协议项下产品单价、价款总额、甲方已支付款项及乙方应向甲方退还款项等金额均按照本协议约定的货币单位(即人民币元)计算，汇率以本协议具体约定为准;如无约定的，以支付时的汇率为准。</p>

            <p>2.6 风险约定基于行业因素，本产品存在随产品原材料价格的波动导致产品价格上涨或下跌的可能，付款后即表明购买人锁定本订单的数量和价格，自愿承担市场可能带来的风险和收益，付款后不可退款退货。</p>

            <p>3、产品发货与交付<br/>3.1 发货时间</p>
            <p>(1)双方确认，本协议第 1.1 条约定的产品应于{$data['shipping_start_date']}至{$data['shipping_end_date']}为发货期。乙方应于发货前以书面形式向甲方在订货时提供的联系地址或电子邮箱发出发货通知。如因甲方提供的联系地址或电子邮箱错误导致发货通知未能成功送达，视为乙方已经通知，由此引起的相关损失由甲方承担。</p>

            <p>(2)在甲方已按照本协议的约定履行付款等义务的情况下，如乙方未在本协议第3.1(1)条约定的发货日期内发货，则甲方有权向乙方进行书面催告。如接 到甲方书面催告后15日内乙方仍未发货，乙方应补偿甲方等价算力（其中将扣除IDC机房运维费，5300元/年/台 =14.52元/天/台）。 </p>

            <p>3.2 乙方应按双方确定的快递或物流方式发货。快递或物流的付款方式为收方支付，即由甲方收货时直接向承运人支付。如因甲方未及时支付运费、无理由拒收产品等原因导致产品退回，甲方应承担乙方及其关联公司由此遭受的全部损失及因此产生的所有额外费用等。</p>

            <p>3.3 乙方将产品交付(以产品交由承运人实际支配控制为准)承运人后，即视为乙方已履行本协议项下发货义务。自产品交付承运人时起，产品所有权移转至甲方，其毁损、灭失风险均由甲方承担。</p>

            <p>3.4 如甲方未向乙方提供收货地址或甲方提供的收货地址无效，则乙方可向甲方发出自提产品的通知(其中应列明自提地点)要求甲方自提。自提产品通知中列明的最早可自提产品之日即视为乙方发货之日，甲方收到通知时乙方即已完成发货义务。甲方应在收到乙方通知后 5个工作日内自提全部产品，否则乙方有权按照每日1元/台的标准向甲方收取保管费、仓储费等费用。 </p>

            <p>3.5 双方确认，乙方将产品交付承运人后，乙方不对其余任何原因(包括承运人) 造成的交货延迟负责，不保证产品到货时间。甲方同意，乙方在任何情况下无须对预计收货日期做出的任何估测陈述负责。</p>

            <p>3.6 甲方应在收到货物(以承运人的配送凭证上的签收日期为收货日期)后 5 日内(下称"验收时间")进行验收，如甲方在约定的验收时间内未提出书面异议的，视为乙方交付的货物完全符合本协议的约定。</p>

            <p>3.7 双方同意，甲方委托乙方安排货物运输，使用运费到付的（即承运人向甲方收取运费）；或甲方自行安排运输或货物自提的。当本合同标的货物离开乙方仓库，装运上甲方或承运人运输工具时，乙方即完成货物交付，乙方不对运输中货物的损坏或灭失负责。</p>

            <p>4、保险<br/>4.1 甲方不可撤销地授权乙方(包括乙方关联公司)为本协议项下产品购买物流公司或第三方公司提供的保价服务。保价费用由乙方承担，为避免疑义，甲乙双方确认，除本协议有明确约定外，乙方为产品购买保价服务不代表乙方对甲方应承担赔偿责任。</p>

            <p>5、质保<br/>5.1 高通量服务器的质保期为自发货之日起 180 天，发货日期以乙方发货时间为准。如质保期内产品发生故障，乙方仅负责产品部件或者整机的替换或维修(下称"质保服务")。如甲方要求乙方提供质保服务，甲方应在质保期内在乙方网站创建维修工单(维修工单创建时间以乙方网站显示为准)并在乙方要求的期限内将产品寄至乙方指定地点，否则乙方有权拒绝提供质保服 务。</p>

            <p>5.2 任何未经乙方事先书面允许而对产品原始硬件进行的修改将导致甲方丧失保修权利。高通量服务器原本基于默认用户界面而不可更改之原始设置文档及/或数据所进行的任何修改，包括但不限于高通量服务器任何修改芯片操作 频率的尝试、使用诸如非官方发布或者自行修改的固件，都将导致甲方丧失保修权利，关于质保及售后维修的详细条款参见乙方售卖产品之官方网站，乙方无义务通知甲方该等条款的更新或修改。</p>

            <p>5.3 在质保期内，硬件产品如需维修或替换，甲方承担将产品发至乙方指定地址的运输费用，乙方承担将维修后或替换产品发至甲方指定地址的运输费用。甲方应承担因其提供的收货信息不正确或不完全而产生的额外费用。甲方承担产品或部件、组件在运输期间(包括甲方向乙方寄出及乙方向甲方退回的运输期间)遭受损失或损害的一切风险。</p>

            <p>6、责任声明<br/>6.1 在法律允许的最大范围内，除质保责任外，乙方不提供任何形式的明示或默示保证，包括但不限于适销性、质量满意度、适合特定目的、不侵犯第三方权利等保证，在任何情况下，乙方亦不对使用产品导致的任何直接、特殊、附 带、偶然或间接的损害进行赔偿，包括但不限于商业利润损失。</p>

            <p>6.2 特别的，乙方不对以下情况承担任何责任:(1)甲方未能根据乙方向甲方书面提供的任何说明书、规格、使用说明或使用 条件使用产品;(2)替换或维修期间产品未运行或其他原因导致的产品未运行造成的损失;(3)由于海关等政府部门没收、查封、扣押、搜查或其它行动造成的任何损失。 </p>

            <p>7、知识产权 产品涵盖的任何知识产权(包括但不限于跟随或组成产品或包含在产品之中的任何及所有文档或数据)，无论是否为乙方专门研发，均由乙方或其第三方供应商独家享有。甲方不得以任何方式非法使用或侵犯产品的知识产权，否则，乙方有权要求甲方立即采取补救措施并承担全部责任，包括但不限于立即停止侵权行为，消除影响，赔偿乙方或其第三方供应商因此遭受的全部损失等。 </p>

            <p>8、陈述与保证<br/>8.1 甲方保证其是根据中华人民共和国法律合法存续的法人/具有完全民事行为能力和民事权利能力的自然人，有能力及权利签订和履行本协议。</p>

            <p>8.2 甲方保证其提供的有关甲方的文件、资料、凭证、订单信息、付款账号、证件号码、手机号码、交易指令等是真实、准确、完整和有效的，不含有与事实不符的重大错误或遗漏任何重大事实。</p>

            <p>8.3 如甲方在乙方网站注册的账号出现可疑交易、非法交易、风险交易等风险事件，根据有关司法机关、监管机构或第三方支付机构要求，甲方同意乙方有权提供甲方在乙方网站的注册信息、交易信息、身份信息、物流信息等，以配合第三方的调查行为。此外，如有必要，甲方有义务根据乙方的要求，进一步提供相应的信息。 </p>

            <p>8.4 甲方保证其未被美国政府列在"实体清单"(Entity List), "拒绝人员名单"(Denied Persons List)或者"特别指定国民名单"(SDN List)，也非直接或间接属于或受控于上述名单中的任何主体，也不受任何美国、中国、欧盟及其成员国的进出口管制、制裁或限制。甲方保证其提供的所有信息均为真实、准确的，且不含任何虚假或误导性的陈述。 </p>

            <p>8.5 甲方承诺其会完全遵守进出口管制相关法律法规，包括但不限于美国的《出口管理条例》、《国际武器贸易条例》和制裁法律，以及中国、欧盟及其成员国的进出口管制和制裁法律法规;不会做出任何可能使得方或其关联公司违反进出口管制相关法律法规的行为。对于因甲方违反进出口管制相关法律法规而引起的或与之有关的针对乙方和/或其关联公司的任何主张、要求、诉讼、费用、程序等，甲方应承担全部责任，如乙方和/或其关联公司因此受到任何损失，甲方应全额赔偿。</p>

            <p>8.6 甲方承认并同意本协议项下产品受到相关国家出口管制法律法规的约束，包括但不限于美国的《出口管理条例》、《国际武器贸易条例》和制裁法律、以及中国、欧盟及其成员国的进出口管制和制裁法律法规。在不限制前述规定的情况下，如果甲方未能从所有相关政府机构(包括但不限于美国工业和安全局)获得许可或许可豁免，则甲方不得直接或间接出口、再出口或转让任何需要进出口许可或许可豁免的产品。甲方同意为了合规审查目的，在乙方要求时，提供所有关于产品进出口、销售与运输的信息。 </p>

            <p>8.7 甲方承诺并保证本协议项下的产品仅能用于民用，不得出口、再出口或转 让给(a)任何主体用于军事用途;(b)任何被美国政府列在实体清单、拒绝人员名单或特别指定国民名单上的个人或主体;(c)任何参与大规模杀伤性武器相关活动的终端用户。大规模杀伤性武器相关活动包括但不限于以下:(1)设计、开发、生产或使用核材料、核设施或核武器;(2)设计、开发、生产或使用导弹，或支持导弹项目;(3)设计、开发、生产或使用生化武器。</p>

            <p>8.8 甲方承诺并保证本协议项下的产品【将仅用于【计算支持】目的。甲方不得使用本协议产品从事任何违反适用法律法规的非法活动，并遵守反洗钱和反恐融资法律法规的要求。】</p>

            <p>8.9 如甲方的行为使乙方及/或其关联公司、合作伙伴遭受第三人主张权利，乙方及/或其关联公司、合作伙伴可在对第三人承担金钱给付等义务后就全部损失 向甲方追偿。如因甲方的行为使得第三人遭受损失或甲方怠于履行赔偿义务，甲方同意委托乙方使用自有资金代甲方支付上述款项，甲方应当返还该部分费用并赔偿因此造成乙方的全部损失。甲方同意乙方及/或关联公司可直接抵减甲方在乙方及/或其关联公司其它协议项下的权益，并可继续追偿。</p>

            <p>8.10 如甲方违反本协议陈述与保证条款的，乙方有权分别或同时采取如下措施: 终止或暂停甲方访问或使用乙方网站全部或部分的权利;要求甲方按约定支付产品价款;要求甲方支付等同于本协议总额 30%的违约金;解除协议;要求甲方赔偿其他损失(包括但不限于乙方自身的直接经济损失、商誉损失及对外支付的罚款、赔偿金、和解费、律师费、诉讼费等间接经济损失);其他法律赋予的救济措施。</p>

            <p>9、不可抗力<br/>9.1 不可抗力的定义:指在本协议签署后发生的、本协议签署时不能预见的、其发生与后果是无法避免或克服的、妨碍任何一方全部或部分履约的所有事件。上述事件包括地震、台风、灾害、战争、暴乱、平民骚乱或政府行为 (包括但不限于政府禁运与产品有关的硬件、软件、技术或服务等)、国际或国内运输中断，以及根据中国法律或一般国际商业惯例认作不可抗力的其他事件。一方缺少资金非为不可抗力事件。</p>

            <p>9.2 不可抗力的后果: </p>
            <p>(1)受不可抗力事件影响的一方在不可抗力造成的延误期内中止履行协议，不视为违约，无需对不可抗力事件所导致的迟延或未能履行本协议义务承担责任。<br/>(2)受不可抗力事件影响的一方应立即通知另一方，以减轻可能给另一方造成的损失，并应当在不可抗力事件发生后 15 个工作日内提供不可抗力的发生及其持续时间的证明。金钱债务的迟延责任不得因不可抗力而免除。</p>

            <p>10、适用法律及争议解决<br/>10.1 本协议按照中华人民共和国(仅为本条之目的，不包括台湾、香港、澳门)法律执行与解释。</p>

            <p>10.2 与本协议相关或由本协议产生的所有争议，首先应由双方友好协商解决。协商不能解决的，任一方可提交乙方所在地有管辖权的人民法院进行诉讼。</p>

            <p>11、其他<br/>11.1 双方同意，除本协议另有约定外，任何一方不得提前解除或终止本协议。</p>

            <p>11.2 本协议不构成甲方与乙方之间的分销协议，且甲方不是乙方的分销商。甲方不得声称其为乙方的官方分销商/经销商或具有任何类似含义的身份/地位。</p>

            <p>11.3 甲乙双方应对本协议的条款及内容、在本协议签署或履行过程中所获悉的有关对方的商业秘密、专有信息及其他相关资料等进行严格保密。本第合同第11.3条在本协议有效期内及本协议因任何原因终止后仍持续有效。</p>

            <p>11.4 本协议任意一方向对方发出的通知或书面函件(包括但不限于本协议项下所有要约、书面文件、订单和通知)，均应以 Email 或快递的方式送达至对方。该等文件的送达日期，按下列方式确认:以 Email 形式发送的，发送至对方邮箱之日为送达日;以快递方式寄送的，则寄出后的第一个工作日为送达日。</p>

            <p>11.5 本协议自双方签署之日起生效。本协议与乙方产品官方网站的交易条款共同构成双方合同条款 的完全表述，本协议与交易条款对于同一事项约定如有不一致之处，以本协议约定为准。任何由乙方以报价、回单或其它文件形式提出的额外的、不同的条 款均视为实质性变更，仅在双方签署正式的补充协议时才生效。本协议的任何修改均应以签署书面补充协议的方式作出。双方签署的书面补充协议与本协议具有同等法律效力。

            <p>11.6 本协议任何条款的无效不影响其余条款的效力。</p>

            <p>11.7 本协议一式两份，双方各执一份，每份具有同等法律效力。</p>


            <hr />

            <p>甲方(盖章/签字): {$data['customer_name']}</p>
            <p>签署日期:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;年&nbsp;&nbsp;&nbsp;&nbsp;月&nbsp;&nbsp;&nbsp;&nbsp;日 </p>
            <br/>
            <p>乙方(盖章): 上海明曦信息科技有限公司</p>
            <p>签署日期:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;年&nbsp;&nbsp;&nbsp;&nbsp;月&nbsp;&nbsp;&nbsp;&nbsp;日</p>

                   <!-- 如果不是最后一行，则添加分页 -->
                   $pageBreakAfterValue
        </div>

            <style>
                .appendix{
                    font-size:10px !important;
                }
            </style>
        <div  style="font-size: 10pt; ">
            <h1>附件一：声明承诺函</h1>
            <p>承诺人(买方法人):  {$data['customer_name']}</p>

            <p>身份证/统一社会信用代码号码：{$data['id_number']}</p>

            <p>联系地址: {$data['shipping_address']}</p>

            <p>电话号码: {$data['phone']}</p>

            <p>（下文所称"承诺人"如未特别指明，即包括全体承诺人）</p>

            <p>鉴于，我司（以下简称"买方"）与【上海明曦信息科技有限公司】（以下简称"卖方"）已经签署了合同编号为 : {$data['order_no']}的《高性能服务器销售合同》 （以下简称"销售合同"）。</p>

            <p>鉴于，根据销售合同的约定，买方保证其购买、使用销售合同项下货物不会违反中华人民共和国（为本承诺函之目的，不包括香港特别行政区、澳门特别行政区和台湾地区，在本承诺函中简称"中国"）或者其他任何国家、地区的法律法规或有关政策规定。买方保证其不在任何禁止使用销售合同项下货物的国家、地区使用销售合同项下货物。鉴于，中国政府部门已经发布的《关于进一步防范和处置虚拟货币交易炒作风险的通知》（银发[2021]237 号）以及《关于整治虚拟货币"挖矿"活动的通知》（发改运行[2021]1283 号）等政策规定，买方保证其不会在中国境内使用销售合同项下货物从事任何违反法律法规或有关政策规定的行为。为保证买方完全履行销售合同，作为【买方的股东/负责人/实控人/受益人】，承诺人自愿以个人全部资产向贵司作出连带的、不可撤销的声明承诺：</p>

            <p>第一条 承诺人保证买方不会：（1）以销售合同任何条款违反了中国或其他任何国家、地区不时发布实施的任何法律法规或者有关政策规定为由，向卖方主张销售合同整体或部分条款不成立、无效、可撤销或终止；及/或（2）以销售合同整体或部分条款不成立、无效、 可撤销或终止为理由，拒绝履行销售合同项下任何义务或者责任（包括但不限于：拒绝向卖方支付货款、要求卖方退还已经支付的货款、要求向卖方退货）。</p>

            <p>第二条 如果买方（1）以销售合同任何条款违反了中国或其他任何国家、地区不时发布实施的任何法律法规或者有关政策规定为由，向卖方主张销售合同整体或部分条款不成立、无效、可撤销或终止；及/或（2）以销售合同整体或部分条款不成立、无效、可撤销或终止为理由，拒绝履行销售合同项下任何义务或者责任（包括但不限于：拒绝向卖方支付货款、要求卖方退还已经支付的货款、要求向卖方退货），则卖方有权直接要求承诺人赔偿卖方因此遭受的直接或间接的全部经济损失，包括但不限于：支付销售合同项下货款、违约金、损害赔偿金、卖方主张的实现债权的费用等，其中实现债权的费用包括但不限于公证费用、诉讼费（或仲裁费）、保全费、公告费、执行费、拍卖费用、律师费、差旅费及其他因实现债权所发生的合理费用。</p>

            <p>第三条 本承诺函自承诺人签字之日起立即生效，对承诺人具有约束力，本承诺函不因销售合同不成立、无效、可撤销或终止而失效。本承诺函构成承诺人不可撤销的承诺，卖方可据此向承诺人追索。</p>

            <p>第四条 争议解决：本承诺函的签署、效力、解释、履行及争议的解决均适用于中国法律，由本承诺函引发的一切争议、纠纷，均由各方协商解决。协商不成的，任何一方均可向上海仲裁委员会，按照该委员会届时有效的仲裁规则进行仲裁。仲裁庭由 3 名按照仲裁规则

            <p>指定的仲裁员组成，申请人指定 1 名仲裁员，被申请人指定 1 名仲裁员，第 3 名仲裁员由前两名仲裁员协商指定或由上海仲裁委员会指定。仲裁语言为中文。仲裁裁决是终局性的，对各方均有约束力。</p>

            <p>第五条 联系与送达：承诺人确认本承诺函中所载本人的联系方式正确有效，如有变更将及时书面通知卖方，否则承诺人自行承担不利后果。承诺人确认，本承诺函中所载本人的手机号码和送达地址同时作为司法机关寄送司法文书的有效联系方式，如遇无人签收、拒收，自司法机关记录相关情况后，即视为司法文书已有效送达本人。本承诺函中所称"法律法规"是指由任何国家、地区的立法机构、行政机构、司法机构或者其他有权机构发布实施的法律、法规、法令、规章、条例、规则、准则、决定、命令、指令、解释、判例等具有约束力的规范性文件。</p>

            <p>第六条 承诺人是具有完全民事行为能力的自然人，具备所有必要的权利能力，能以自身名义履行本承诺函的义务并承担民事责任。承诺人完全了解销售合同的内容，签署和履行本承诺函是承诺人真实的意思表示。</p>

            <p>第七条 本承诺函生效后，承诺人应全面履行本承诺函约定的义务。承诺人不履行或不完全履行本承诺函约定义务的，应向卖方支付销售合同项下货款的 30%的违约金，违约金不足以赔偿卖方经济损失的，卖方仍然有权要求承诺人连带地赔偿卖方遭受的全部直接或间接的经济损失。</p>

            <p>第八条 本承诺函一式【贰】份，各方各执壹份，每份具有同等的法律效力。</p>

            <p>在签署之前，承诺人已取得、阅读和充分理解编号为: {$data['order_no']}的《高性能服务器销售合同》之内容，了解出具本承诺函后将承担的义务与责任。</p>

            <br/>

            <p>承诺人（买方法人）签名：</p>
            <p>公章：</p>
            <p></p>
            <br/>
            <p></p>
            <br/>
            <p>签署日期：{$data['signing_date']}</p>
            <p>附：承诺人身份证件（正反面）复印件</p>


        </div>






        <!-- 这里继续添加合同其他章节内容 -->
HTML;
    }
}
